<!DOCTYPE html>


<html lang="zh-CN">


<head>
  <meta charset="utf-8" />
    
  <meta name="description" content="welcome" />
  
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
  <title>
    毕业前三年如何在大厂拿到好绩效 |  ChenyyのBlog
  </title>
  <meta name="generator" content="hexo-theme-ayer">
  
  <link rel="shortcut icon" href="/favicon.ico" />
  
  
<link rel="stylesheet" href="/dist/main.css">

  <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/css/remixicon.min.css">
  
<link rel="stylesheet" href="/css/custom.css">

  
  <script src="https://cdn.jsdelivr.net/npm/pace-js@1.0.2/pace.min.js"></script>
  
  

  

</head>

</html>

<body>
  <div id="app">
    
      
    <main class="content on">
      <section class="outer">
  <article
  id="post-resource/profession/毕业前三年如何在大厂拿到好绩效"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h1 class="article-title sea-center" style="border-left:0" itemprop="name">
  毕业前三年如何在大厂拿到好绩效
</h1>
 

    </header>
     
    <div class="article-meta">
      <a href="/2021/07/18/resource/profession/%E6%AF%95%E4%B8%9A%E5%89%8D%E4%B8%89%E5%B9%B4%E5%A6%82%E4%BD%95%E5%9C%A8%E5%A4%A7%E5%8E%82%E6%8B%BF%E5%88%B0%E5%A5%BD%E7%BB%A9%E6%95%88/" class="article-date">
  <time datetime="2021-07-18T13:21:21.000Z" itemprop="datePublished">2021-07-18</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E7%94%9F%E6%B6%AF/">生涯</a>
  </div>
  
<div class="word_count">
    <span class="post-time">
        <span class="post-meta-item-icon">
            <i class="ri-quill-pen-line"></i>
            <span class="post-meta-item-text"> 字数统计:</span>
            <span class="post-count">8.1k</span>
        </span>
    </span>

    <span class="post-time">
        &nbsp; | &nbsp;
        <span class="post-meta-item-icon">
            <i class="ri-book-open-line"></i>
            <span class="post-meta-item-text"> 阅读时长≈</span>
            <span class="post-count">27 分钟</span>
        </span>
    </span>
</div>
 
    </div>
      
    <div class="tocbot"></div>




  
    <div class="article-entry" itemprop="articleBody">
       
  <ul>
<li>毕业前三年战略打法<ul>
<li>入职0.5年</li>
<li>入职1.5年</li>
<li>入职2.5年</li>
</ul>
</li>
<li>如何拿到好绩效<ul>
<li>制定目标/职业规划</li>
<li>居安思危</li>
<li>日常工作</li>
<li>技术成长</li>
</ul>
</li>
<li>总结</li>
</ul>
<span id="more"></span>



<h1 id="毕业前三年战略打法"><a href="#毕业前三年战略打法" class="headerlink" title="毕业前三年战略打法"></a>毕业前三年战略打法</h1><h2 id="入职-0-5-年"><a href="#入职-0-5-年" class="headerlink" title="入职 0.5 年"></a>入职 0.5 年</h2><p>作为职场新人，目标只有一个，尽快的通过试用期、<strong>熟悉技术栈 + 工具 + 业务</strong>，要有一定产出。为啥要尽快的熟悉这些呢？<strong>核心就是提升工作效率，工作要的是产出，拿的是结果</strong>。</p>
<p>开始的时候工作不会很忙，就要利用好空余时间时间，看工作需要的各个平台、工具的使用文档，以及内网大牛的技术文章，自己写小 demo 走通上线流程、以及看各种平台别人怎么设置？怎么搞？去写小 demo 走通这些。</p>
<p><strong>第一步打法：入职前半年，耐下心来、仔细认真的看平台、工具使用文档，熟悉自己所负责业务的流程 + 技术栈 + 平台工具，热情饱满的去工作，早点去公司，晚点下班走，多跟师兄沟通，一切行动听指挥，在这半年公司对你是有一定包容的，允许你去犯错，毕竟还是新人。</strong></p>
<h2 id="入职-1-5-年"><a href="#入职-1-5-年" class="headerlink" title="入职 1.5 年"></a>入职 1.5 年</h2><p><strong>持续学习</strong>：技术人要保持一颗不断学习的心，技术/业务每天都要去学习。</p>
<p><strong>好奇心驱动</strong>：作专研 + 探究 的品质，我看到那些平台工具，会使用很简单（用仅仅是入门），但是背后技术实现的原理是什么样的？都需要<strong>知其所以然</strong>。</p>
<p><strong>全链路意识</strong>：不仅仅只对你自己的模块负责，而是要熟悉这个项目从前端、后台、算法策略所有流程都要清楚。</p>
<p><strong>极致精神</strong>：工作中追求高标准做事情，要做到性能、效率，成本无止境的去优化，抽象、简化、规范、代码持续重构等。</p>
<p><strong>第二步打法：这个阶段就是产出、能力说话，干的好、有能力的就晋升。你需要跟组内其他成员进行横向对比，技术、产出、个人成长等等方面，要保持持续学习 + 好奇心驱动 + 全链路意识 + 极致精神。</strong></p>
<p>能晋升一定要尽早，每年的应届生入职，随着人数的增加，晋升将会越来越难，在一家公司工作长时间没有晋升，职业发展的危机感慢慢就会突出。</p>
<h2 id="入职-2-5-年"><a href="#入职-2-5-年" class="headerlink" title="入职 2.5 年"></a>入职 2.5 年</h2><p><strong>跟业界同行交流</strong>：需要跟业界做相同事情的同学进行交流，看看别人的模型，算法都是哪些？千万不敢局限于自身，走出去和业界技术人员的交流，会开阔你的眼界，让你收获满满。</p>
<p><strong>反馈业务</strong>：深入业务思考，进而反馈、影响到业务，而不是业务说啥就是啥，要站在你的角度看问题，要有和业务共同决策的能力。</p>
<p><strong>找主管聊</strong>：这个阶段面临着晋升的机会，需要定期约 leader复盘自己的产出、贡献、影响力。有差异的地方可以尽早沟通，会避免你做的事情不被认可，以及做事情安排优先级不当的问题，多沟通总是没有错的。</p>
<p><strong>第三步打法：在持续深入技术、提升个人能力的同时，业界主流 + 反馈业务 + 找主管聊，这几点是相当重要，应届入职跟带你的师兄多交流，工作 1-2 年了，跟你的 leader 多交流（要主动约），能避免做无用功，和走一些弯路。</strong></p>
<h1 id="如何拿到好绩效"><a href="#如何拿到好绩效" class="headerlink" title="如何拿到好绩效"></a>如何拿到好绩效</h1><p>毕业 1-3 年阶段，<strong>能不能拿到好绩效跟你自身实力，以及在这块投入时间、精力关系很大，跟机遇、项目关系没有那么大</strong>。退一万步说，真遇上坑的 leader，通过内部活水，或者跳槽出去直接 double，前提关键是在这个阶段技术实力是否能匹配上对应的职级。高级别的晋升不光看技术能力、业务产出，还有管理能力、ppt 汇总、方向把控、团队规划等，确实需要有好的机遇，以及好的业务来让你做，高级别晋升外在因素占比挺大，想升上去就相当难了。</p>
<h2 id="制定目标-职业规划"><a href="#制定目标-职业规划" class="headerlink" title="制定目标/职业规划"></a>制定目标/职业规划</h2><p>思考一下几个问题：</p>
<p>未来目标是什么？在哪家公司可以实现？预估需要多久实现？目前自己需要哪些资源或者能力来达到这个目标？</p>
<h3 id="阿里职级要求"><a href="#阿里职级要求" class="headerlink" title="阿里职级要求"></a>阿里职级要求</h3><ul>
<li>P5：完美执行</li>
<li>P6：独当一面</li>
<li>P7：开拓创新</li>
<li>P8：引领未来</li>
<li>P9：无中生有</li>
</ul>
<h3 id="晋升目标"><a href="#晋升目标" class="headerlink" title="晋升目标"></a>晋升目标</h3><ul>
<li><strong>新人落地</strong>：适应公司环境，以及自己当前层级的工作</li>
<li>怎么样才能从众多同层级的同学中脱颖而出，让主管关注到你，愿意给你更多的挑战，让你承担更多的责任？</li>
<li><strong>展露头角</strong>：通过不断成长，在同层级的同学中处于靠前的水平，得到主管的关注和认可</li>
<li>如何树立自己达到下一个层级的目标，并顺利推动完成，在过程中得到自我的成长和突破？</li>
<li><strong>突破自我</strong>：规划并完成达到下一个层级的关键路径与结果，证明自己可以达到下一个层级的要求</li>
<li>被提名后，如何将一年甚至几年的事情浓缩到十几页的PPT中，并用20分钟给评委讲清楚？</li>
<li><strong>晋升答辩</strong>：对过去的工作做体系化的梳理总结，给评委讲一个故事，把过去做的事情串联起来，在晋升场上得到评委的认可，通过晋升。</li>
</ul>
<h3 id="短期"><a href="#短期" class="headerlink" title="短期"></a>短期</h3><p><strong>短期目标要务实，关注外在诉求，对应职级要求。</strong>目标明确后，才会有针对性性的手段，才能更落地。</p>
<p>在技术和业务上的精进，熟悉业务之后能够严格执行并完成各项任务，接下来在某一块业务领域上能够独当一面。</p>
<h3 id="长期"><a href="#长期" class="headerlink" title="长期"></a>长期</h3><p><strong>长期目标要务虚，关注内在期待，自己想成为什么样的人。</strong>新公司的打算，对应我想从公司获得什么，我可以做哪些事，其实本质上是对自我价值的实现。你到底想成为怎样的人，决定了在你选择的方向。内在期待的渴求程度，决定了你可以走多远。</p>
<p>成为最好的自己，好的品质有太多太多了。新公司也会带来新的知识，新的挑战，新的困难，在其中磨炼自己的多方面的能力。</p>
<h2 id="居安思危"><a href="#居安思危" class="headerlink" title="居安思危"></a>居安思危</h2><h3 id="什么是二星"><a href="#什么是二星" class="headerlink" title="什么是二星"></a>什么是二星</h3><p>低绩效，阿里俗称 kpi，字节俗称 okr，很多大厂都有类似 kpi/okr 的东西，这就是个人绩效，绩效好的升职加薪，绩效差的一年白干，甚至有可能走人。腾讯是二星，阿里是 3.25，百度、字节、美团、滴滴等是 C。</p>
<p>毕业第 2 年，此时你需要跟组内其他成员进行横向对比，技术、产出、个人成长等等方面，能晋升一定要尽早，每年的应届生入职，随着人数的增加，晋升将会越来越难，在一家公司工作长时间没有晋升，职业发展的危机感慢慢就会突出。</p>
<h3 id="谁会背二星"><a href="#谁会背二星" class="headerlink" title="谁会背二星"></a>谁会背二星</h3><p>大家都完成了 kpi/okr，但 okr/kpi 这个仅仅是基本要求，不是你完成了就万事大吉了，leader 要思考的是谁离开对我明年展开工作影响最小，目前在团队内承担的是什么角色，即使别人未完成 okr/kpi，哪怕出现过线上事故，只要这个人技术能力强，或者具有业务价值（跟业务熟悉，能推动项目、能调配资源等），那么他就不会背 2 星。</p>
<p>背 2 星的一定是平庸、没啥突出的人，<strong>离开团队对团队影响最小的那个人</strong>，跟你完不完成 kpi/okr，有没有出现过线上事故有半毛线关系，看的是你在这个团队的影响，重要程度的排名，这个才是根本！</p>
<p>不进步就是退步，谁都有可能背 2 星，一定要清楚认知到自己在团队的定位，你们团队有没有 2 星名额，这个看下团队人数就知道了啊，在大厂工作时刻具备危险性的嗅觉，越优秀的团队竞争越是激烈。</p>
<p>绩效是 leader 对你认可的体现，不要看给你说什么？承诺什么？这些都是画大饼，要看年终给你打什么绩效，leader 要是认可你，那么绩效绝对不会差。</p>
<p>团队影响、重要程度的排名，无非 2 点：</p>
<ol>
<li>你<strong>个人的技术能力</strong>，是不是团队垫底？按道理来说有个半年缓冲，应届生的学习能力，以及投入的时间、精力都是足够你学习成长的（技术 + 业务），除非你自己把这个时间浪费在了别的事情上面，不然刚毕业 1-2 年确实是成长很快的，最多是差在了工作经验上而已，这个阶段你应该能独立负责、以及承担一些事情了，解决问题的能力突显出来；</li>
<li><strong>重要业务的负责人</strong>之一，或者组内常用系统/平台负责人之一，核心就是你目前做的事情对于整个团队算是比较重要的，而不是在做一些边缘性、打杂性质的事情；</li>
</ol>
<h3 id="求上得中打法"><a href="#求上得中打法" class="headerlink" title="求上得中打法"></a><strong>求上得中打法</strong></h3><p>平时工作向 4/5 星优秀看齐，做的事情向下一个级别去要求自己，做好了水到渠成拿好绩效 + 晋升，做的不是很好退而求其次也不至于背 2 星，平时要是只完成工作，没有在技术上学习或者业务上思考，求中就有可能会得到下，一定要有”求上得中“的思想，才能确保不至于背差绩效。</p>
<p><strong>大厂工作“不进则退”，你不想着进步，不想着拿好绩效、不想着尽快晋升，那很快就会成为绩效最差的那一个，而且晋升也不是说年限到了一定会升，好绩效大家轮流拿，大部分部门不会这样的，相对公平公正是存在的，肯定还是要看你的技术能力、个人成长、以及业务理解。</strong></p>
<h2 id="日常工作"><a href="#日常工作" class="headerlink" title="日常工作"></a><strong>日常工作</strong></h2><h3 id="熟悉环境"><a href="#熟悉环境" class="headerlink" title="熟悉环境"></a><strong>熟悉环境</strong></h3><p><strong>第一阶段：熟悉技术栈 + 工具 + 业务。只有充分了解了平台、工具具备的能力，才能在工作中效率最大化。</strong></p>
<p><strong>第二阶段：经常使用的工具、平台不仅要会用，还要去了解底层原理、架构设计、存储相关等，还有一系列类似平台工具都需要知其所以然（指的是工作中经常接触的）。</strong></p>
<p>如何学习这些平台、工具的底层原理呢？主要三方面：一是看相关文档介绍（原理部分），二是有些可以直接拉到源代码去学习，三是找相关的技术人员聊聊这块的技术细节（请吃饭、喝咖啡等）。</p>
<p>能通过查文档、Google、写 Demo、Debug 调试等学习方式，就可以避免经常去问别人一些比较 low 的问题，也能提升自己解决问题的能力，其实工作中很多问题，只要善于利用平台、工具都是可以很快解决的。</p>
<h3 id="安排规划"><a href="#安排规划" class="headerlink" title="安排规划"></a>安排规划</h3><p>做事情要有条斯里，面对复杂的项目，混乱的排期，首先不是急着着手去做，而是先把这被揉成一团的棉线先理清楚，有了明确的着力点之后再去做，才可思路清晰，事半功倍。</p>
<p>在做项目时，要做到稳，首先必须把节奏掌握在自己手中，按着自己的节奏才不会出错。那么要有自己的节奏就必须要有自己的安排和规划。做事先定计划，不管是写下来的还是心中的，都不可想到哪里做到哪里。同时，侥幸心理绝对不能有，因事小而不为，乃是大忌。</p>
<p><strong>一个功能的开发，需要经历如下几步：</strong></p>
<ol>
<li>看需求文档，确定需求</li>
<li>这个需求包含了哪些功能</li>
<li>有哪些难点</li>
<li>后台架构是什么样的（要有架构图）</li>
<li>定协议（前后台一起商量），服务与服务之间的，后台与客户端之间的</li>
<li>设计数据结构+算法=程序</li>
<li>预估一下容量（各种资源例如带宽，存储，CPU等等）</li>
<li>考虑一下部署（安全性，容灾，可伸缩性。。。。）</li>
<li>设计评审（上面过程都是在分析）</li>
<li>编码</li>
<li>自测</li>
<li>联调</li>
<li>交给测试</li>
<li>代码review</li>
<li>合入</li>
<li>发布</li>
</ol>
<h3 id="全链路意识"><a href="#全链路意识" class="headerlink" title="全链路意识"></a>全链路意识</h3><p>想要比别人做的更好，想要拿到好绩效、以及股票、晋升，就要比别人做的更多，全链路的意思是不仅仅只对你自己的模块负责，而是要<strong>熟悉这个项目从前端、后台、算法策略所有流程都要清楚</strong>。</p>
<p>你的上下游是怎么调用的，以及哪些场景用了哪些算法策略？还要多跟业务方接触，熟悉业务流程，了解该需求是解决用户什么问题？这样你才有可能当上项目的负责人（也就是技术PM）。</p>
<h3 id="自主意识"><a href="#自主意识" class="headerlink" title="自主意识"></a><strong>自主意识</strong></h3><p>在日常工作中，技术调研阶段一定要明确需求，最起码先要<strong>有自己的技术方案</strong>，工作从来不是别人告诉你要怎么做？而是你拿上自己的方案去进行评审、确认。不管做什么事情，一定要有自己的想法，脑袋是用来思考的，不是别人说啥就是啥。</p>
<p>在别人的推动下往前走，这样你永远原地踏步，缺乏工作积极性，也是大部分职场难以进步的通病；<strong>被动接受是别人给你安排的，需要你主动的站出来去承担一些事情才能进步，平时要多花时间积极主动的思考，去想技术、业务上的痛点</strong>。</p>
<p>遇到业务或者技术上的挑战，也一定要有「此时此刻，非我莫属」的心态，<strong>主动跳出当前的舒适区，承担更多的责任，在关键时刻敢于冲锋在前，这些都是组织需要的人才的特质。</strong></p>
<h3 id="极致精神"><a href="#极致精神" class="headerlink" title="极致精神"></a>极致精神</h3><p><strong>工作中追求高标准做事情、要做的牛、快，对于负责的模块，要做到性能、效率，成本无止境的去优化，抽象、简化、规范、代码持续重构等。</strong></p>
<p>是否具备极致精神，主要看你对于工作的态度，是完成了事，还是具备优化意识，肯定需要你积极主动去发现问题、解决问题（不影响工作的前提下，利用业余时间去搞，晚上/周末）。</p>
<p>毕业1-3年，<strong>要想着如何快速成长，如何能利用时间多学点技术，这就是每个人认知的思维差异；</strong></p>
<p>在公司工作，肯定避免不了线上问题，对于每一次线上问题的解决，会暴露出很多问题，是否定位问题太慢？是否缺少必要的日志？对系统/工具不熟悉？系统是否还有类似的坑等等问题，其解决方案是进行系统化的稳定性建设，以及熟悉平台/工具。遇到的每个坑都能深入了解背后的机制，这就是刨根问底、追查问题的能力。</p>
<h3 id="反馈意识"><a href="#反馈意识" class="headerlink" title="反馈意识"></a>反馈意识</h3><p><strong>与业务反馈</strong></p>
<p>作为技术 PM，对于整个项目的把控，以及业务流程的熟悉，可以多跟业务交流，看看他们的痛点在哪？是否可以通过技术去帮助他们？是可以的，通过写脚本，开发一些工具，通过报表形式展现，可以节省工时、用人、成本等等，这样不就可以拿到更好的结果。</p>
<ul>
<li><strong>明确需求优先级</strong>：不接临时沟通需求，日常项目拒绝倒排，不压榨自己。重点项目需要 ALL IN，全力以赴完成业务目标。</li>
<li><strong>与业务同学主动沟通</strong>，了解业务在财年内的大方向和重点打法，这样在贴合业务做技术建设的时候，我们就可以在每个日常的业务需求中，进行技术的试点与落地。</li>
<li><strong>适当做一些超出业务预期的事情，尽量降低纯业务投入的占比的</strong>。或提升自己单位时间的输出，或提炼抽象业务公共组件&amp;SDK，或培训好外包同学，让他们分担一定的工作。</li>
</ul>
<p><strong>要深入业务思考，进而反馈、影响到业务，而不是业务说啥就是啥，要站在你的角度看问题，要有和业务共同决策的能力，将被动转换为主动，这样才能获得有利评价。</strong></p>
<p><strong>与领导反馈</strong></p>
<p>定期约 leader（一月一次），<strong>复盘自己的产出、贡献、影响力</strong>，让你 leader 知道你做一些具体事情，看看他的想法是什么样的？对你有啥建议？你俩想的是否能 match 上？<strong>有差异的地方可以尽早沟通，会避免你做的事情不被认可，以及做事情安排优先级不当的问题，多沟通总是没有错的。</strong></p>
<p>这样的好处就是你 leader 对于你，在谈绩效、以及晋升的时候肯定心里有底，那么结果就是预期之内的了。</p>
<p>下面几点比较重要：</p>
<ol>
<li>手头事情要是很多，一定要有<strong>优先级</strong>；</li>
<li>做的事情一定要有<strong>反馈</strong>，有<strong>阶段性的汇报</strong>；</li>
<li>困难<strong>风险第一时间报出来</strong>，大家一起想办法解决；</li>
<li>通过做技术、业务上的<strong>分享</strong>，提升在团队内的<strong>影响力</strong>；</li>
<li>有些事情<strong>能出头就不要怂</strong>，认准机会，果断出手；</li>
<li>站在领导的视角看问题，<strong>多角度的去想事情</strong>；</li>
<li>不要让领导觉得你<strong>推卸责任甩锅</strong>，要让人觉得<strong>可靠</strong>；</li>
</ol>
<h2 id="技术成长"><a href="#技术成长" class="headerlink" title="技术成长"></a>技术成长</h2><h3 id="方向"><a href="#方向" class="headerlink" title="方向"></a><strong>方向</strong></h3><p><strong>工作了要围绕工作相关技术栈去学习</strong>，熟悉业务流程，而不是整天在学操作系统、计算机网络、数据结构、算法等，这些是底层原理，远水解不了近渴啊！工作要的是效率、产出，对于技术栈的学习是第一位的，平台 + 工具的熟练掌握很重要（以及背后原理），而底层的学习是漫长而又持久的，优先级不一样啊，除非你要跳槽面试了，那到没有问题。</p>
<p>在毕业 1-3 年的时候，这个阶段的成长要素：<strong>明确的职业方向+指导人+个人自驱</strong></p>
<ol>
<li><strong>明确的职业方向</strong>：要有一个自己深耕领域的方向去努力，后端、算法、前端、大数据等；或者深耕某一个业务领域，电商、金融、人工智能等；</li>
<li><strong>指导人</strong>：在工作上对你指引，帮助你快速的熟悉业务、技术，有这么一个领路人；</li>
<li><strong>个人自驱</strong>：不断学习技术、有目标、有规划的进行，自我驱动能力比较强；</li>
</ol>
<h3 id="交流"><a href="#交流" class="headerlink" title="交流"></a><strong>交流</strong></h3><p>需要跟业界做相同事情的同学进行交流，看看别人的模型，算法都是哪些？比如同样是做推荐场景的，你有没有和淘宝做推荐、抖音做推荐、手百做推荐、微信做推荐、美团做推荐的这些同学聊聊呢？</p>
<p><strong>千万不敢局限于自身，走出去和业界技术人员的交流，会开阔你的眼界，让你收获满满。</strong>跟不同公司的同学在交流，然后在组内做技术分享，扩大自身的技术影响力，要走出去，在走进来，这样对于个人成长、开阔视野是极其有帮助的。</p>
<p>时不时看看兄弟团队都在做些什么，拓宽自己信息获取的渠道，通过各种项目文档，专项规划、晋升总结、周报、讨论记录，甚至也可以当面沟通。对整个团队的充分了解，也有助于我们在做技术决策时，避免重复建设、闭门造车等问题，也能够更好地借力与合力，共建一套标准和生态。</p>
<h3 id="持续学习"><a href="#持续学习" class="headerlink" title="持续学习"></a><strong>持续学习</strong></h3><p>技术实力的体现：</p>
<ol>
<li><strong>持续学习新的技术</strong>，始终保持学习技术的热情 + 好奇心；</li>
<li><strong>能解决业务带来的各种技术难题，以及对问题追根刨底的能力</strong>，找到问题的本质并且能够尽量规避。</li>
</ol>
<p>个人技术能力的成长，离不开持续的学习，不仅要学习一些理论的知识，还需要在工作实践中学以致用。</p>
<p>毕业这几年确实是晋升最快，技术实力提升最快的阶段了，能力真到了，来市场上面试可以检验下，遇到不错的 package 完全可以考虑下。</p>
<p>同一年毕业进入大厂的，有人是白菜价，有人拿 sp、甚至还有人拿 ssp，其实每个月也就差几千块钱，真的没啥大的差别，注重个人价值的提升，耐心打磨技术能力，等待长期价值的爆发。</p>
<p>毕业工作 3 年，别人已经 t9 了，自己还是 t8、甚至 t7，更有可能当初跟你一起来腾讯的，现在都已经离职了，同学之间的差距在毕业 3 年初步显现出来，看看职级、看看 package，一切都清楚了。</p>
<p>同样升到 t9，有人三年，有人五年，有人可能一直升不上去，<strong>晋升绝对不是在那熬时间就可以的，是要有一些真本事的，是确实能力达到这个级别的要求了</strong>，时间长短不一样，所带来的 package 完全不同，以及对后续的晋升肯定是有影响的。</p>
<p><strong>当潮水退去，到底是谁在裸泳？</strong> </p>
<h1 id="人生的六个阶段"><a href="#人生的六个阶段" class="headerlink" title="人生的六个阶段"></a>人生的六个阶段</h1><h2 id="1、潜龙勿用"><a href="#1、潜龙勿用" class="headerlink" title="1、潜龙勿用"></a>1、潜龙勿用</h2><p>在时机不成熟的时候，或者自己能力不足的时候，要暗中积蓄自己的力量。</p>
<p>降龙十八掌第五式就是“潜龙勿用”，说一下字面意思，潜在水里面的龙，就是有本事也不应该显露锋芒，职场初期，讲究的学习，为人低调。</p>
<h2 id="2、见龙在田"><a href="#2、见龙在田" class="headerlink" title="2、见龙在田"></a>2、见龙在田</h2><p>经历了潜藏积蓄，要抓住一定的时机才能崭露头角。</p>
<p>经过努力，慢慢的显露才华，但还没有能力翱翔天际。</p>
<h2 id="3、终日乾乾"><a href="#3、终日乾乾" class="headerlink" title="3、终日乾乾"></a>3、终日乾乾</h2><p>这个时候你要提高警惕，千万不要因为自己做出一点成绩，而得意和自满，应时时刻刻检讨，反省自己的言行。</p>
<p>此刻做出了一些成绩，不敢骄傲自满，时刻认清自己。</p>
<h2 id="4、或跃在渊"><a href="#4、或跃在渊" class="headerlink" title="4、或跃在渊"></a>4、或跃在渊</h2><p>抓住机会在努力和拼搏中，将事业和人生推向最高处。</p>
<p>准备鲤鱼跳龙门了，跳上去很难，但是一旦上去，乘风化龙。</p>
<h2 id="5、飞龙在天"><a href="#5、飞龙在天" class="headerlink" title="5、飞龙在天"></a>5、飞龙在天</h2><p>事业巅峰即将来临，人生的指针正处在宏图大展的好时机上，准备一飞冲天。</p>
<p>此刻乃人生巅峰！</p>
<h2 id="6、亢龙有悔"><a href="#6、亢龙有悔" class="headerlink" title="6、亢龙有悔"></a>6、亢龙有悔</h2><p>知进退存亡而不失其正，才能保身保富贵，保持自己的事业兴旺和不断发展。</p>
<p>不能恣意妄为，还需要谨慎。</p>
<p>想要一飞冲天，必须经过数十年的积累，离不开实干精神，不在于走多快，而在于每天都在向前走！</p>
<p>现在做事情很多时候都急于求成，心浮气躁，功利性太强总是不太好，容易被蒙蔽双眼；程序员行业，想在技术方向上走得远，5 年专家级别，想要达到技术上某一领域的权威，至少深耕 7-8 年，乃至数十年，才有可能在某一领域做到足够好，想走其他方向，提早摸索尝试布局，适合自己的才是最好的方向。</p>
<p>总有人问我：为啥你总是充满激情和活力？</p>
<p>看清自己在哪个阶段，当下最重要的事情是什么？只有明确了最重要的事情（也就是目标），你的眼里才会有光，才会有那种渴望达到的心劲，这就是动力！</p>
<p>把当下的事做到最好，按照贪心算法原理：局部最优，则全局最优。</p>
<h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a><strong>总结</strong></h1><h3 id="君子藏器于身，待时而动"><a href="#君子藏器于身，待时而动" class="headerlink" title="君子藏器于身，待时而动"></a><strong>君子藏器于身，待时而动</strong></h3><p>晋升之后，对于每个人的要求相应的就提升了，想再拿好绩效是非常难的，而 6-7 的晋升一般卡的很严，是需要一些项目机会去支撑的，在到达一个相对安全的职级，此时就需要蛰伏，摸索下一阶段打法，待时而动。</p>
<p><strong>保持低调做人，高调做事的风格，职场上的基础打扎实了，自己的选择也会更多。</strong></p>
<h3 id="人生成就-思维方式-X-热情-X-能力"><a href="#人生成就-思维方式-X-热情-X-能力" class="headerlink" title="人生成就 = 思维方式 X 热情 X 能力"></a><strong>人生成就 = 思维方式 X 热情 X 能力</strong></h3><p>能力：指的是每个人先天的智商、悟性、学习能力，以及后期通过努力掌握的技术，是可以通过学习去提升的，分值在 [0-100] 分之间；</p>
<p>热情：指的是每个人对这个事情的兴趣，是否是真的喜欢去做，程序员的话，是否对 coding 充满热情，是否很享受 coding 的乐趣，分值在 [0-100] 分之间；</p>
<p>思维方式：指的是你如何看待这个事情的？你自己的思考逻辑是什么？有什么数据/分析支撑你的思考呢？分值在 [-100-100] 之间；</p>
<p>稻盛和夫的“人生成就公式”中，思维方式是有负分的，思维方式比热情、能力都要重要<strong>，</strong>你看同一件事情，在面对的时候每个人的想法是不一样的，那么最终的决策肯定完全不一样，或多或少会对你造成影响；我其实不断的在强调思考、思维能力，这个真的很重要，<strong>你是如何看待一件事情的，将会决定你的上限有多高。</strong></p>
<p>举个例子：你工作非常认真努力，事情都完成的很好，你 leader 不认可你，给你差绩效，2 种心里状态：</p>
<ul>
<li>你会怀疑人生，认为踏踏实实干的好还不如别人划水摸鱼的好？不如别人能说会道，就开始懈怠，觉得干好干差一个样，没必要那么努力了；</li>
<li>跟 leader 在好好聊聊，如果还不认可，先蛰伏一段时间，趁机好好准备下，去内部活水或者跳槽去其他公司，找到更好的工作、更高的薪水，来体现自己的价值；</li>
</ul>
<p>同样 8-9 点搞完工作，每个人的思维方式不同，下班后做的事情就完全不一样</p>
<ul>
<li>有人下班回家躺床上玩游戏、追剧；</li>
<li>有人陪女朋友，陪孩子；</li>
<li>有人白天主业，晚上副业，回去搞副业，接私活、写文章、短视频等；</li>
<li>有人持续学习技术（好奇心驱动），提升自身技术能力等。</li>
</ul>
<p>事情没有对错，只不过不同阶段所侧重的完全不一样，毕业 1-3 年，毫无疑问，这是个人技术成长、能力提升最重要的时机，抓住机会，职级、总包都会上去，职业发展的第一步就算走成了。说白了就是不同阶段的战略打法。</p>
<h3 id="极致-专注"><a href="#极致-专注" class="headerlink" title="极致 + 专注"></a><strong>极致 + 专注</strong></h3><p>怎么做到极致，需要<strong>长时间”专注“在某一领域</strong>，不要给自己一次性设定过多的目标，那样既没有优先级，也没有清晰的方向，建议大家<strong>在一个阶段设定一个清晰的目标。</strong></p>
<p>你要清楚的认识到，即使你用了所有业余时间，下班 + 周末在提升专业能力，也未必能达到你的预期，但是这个过程，你的收获一定是非常巨大的，你的个人能力的提升一定是显著的，这是完全不亏的打法。</p>
<p>技术能力的提升就是这样平白无奇，在日复一日的坚持学习、解决问题中潜移默化的提升了，回过头来在看你自己都大吃一惊，这就是在”专注“的前提下，把一件事做到极致！</p>
<p>做任何事情，做到一般其实不难，难的是追求极致，为了那么一点点极致（96 分到 99 分远比 80 分到 90 分难）而要花费巨大的时间成本，这就看值不值了，学习技术、努力工作 100% 值！</p>
<p><strong>人生需要布局：目标拆解，逐步推进、一个一个去实现。</strong></p>
<h3 id="投资自己"><a href="#投资自己" class="headerlink" title="投资自己"></a><strong>投资自己</strong></h3><p>短期价值：为了眼前小利，抛弃个人成长；</p>
<p>长期价值：长期投资自己、硬技能 + 软技能的提升，全面发展；</p>
<p>追求短期价值，会让人的心态过于浮躁和焦虑，一旦进入这种状态，是没有办法专心做事的，怎么避免个人焦虑呢？</p>
<p>学会避免焦虑，调整好心态，慢慢的找回自己，我就把朋友圈整天发推广、带货的一些好友直接屏蔽了，退了很多无用的技术讨论群，公众号留下了自己觉得有用的，大量减少看手机的时间，让自己忙碌起来，避免自己太过空闲，专注做好手头的事情，上下班地铁、排队打饭等待的时间都充分利用起来，我坚信长期价值是值得等待的。</p>
<p>财富是价值的体现，不要只看到眼前的价值，而忽略无形的财富，<strong>有些是无法用金钱去衡量的，打铁还需自身硬</strong>；短期价值 + 长期价值整体的投资回报，未来发展的多元变化，这才是全局最优打法，不能只看眼下，还需要关注未来的预期收益如何。</p>
<p>核心就是优先级的明确、精力的分配这个要看当下，每个人的情况是不一样的。</p>
<p><strong>在毕业 1-3 年这个阶段，个人能力的提升远比挣多少钱划算多了（指得是专业能力），只要打下了坚实的基础，在人生漫漫长路中，长期价值将会被逐步放大，获得终生受益，这就是短期舍弃利益，获取长期价值的打法</strong>；始终相信一点，持续学习、不断强化自己的能力（硬技能 + 软技能），在这过程中可以摸索打法、门路，一定要看阶段、看个人处境来决定。</p>
<p>长期价值必然要经历的阶段：<strong>蛰伏期、成长期、爆发期，这必定是一条披荆斩棘、孤独求生、困难重重之路。</strong></p>
<p>不用关注短期价值，要注重长期价值，关注自己价值的提升，收入一定跟着价值去提升的，持续成长、持续学习，过程中做到努力、奋斗，高估短期收益给人带来的价格，低估长期努力的成就给人带来的价值。</p>
<p><strong>每个领域都有厉害的人，低调、谦虚的向他们多学习。真正的大师，永远怀着一颗学徒的心。</strong></p>
<p>参考：</p>
<p>毕业 2 年打法全揭晓（上）：<a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/-otcTFcsgrLmtjpDyvdRcw">https://mp.weixin.qq.com/s/-otcTFcsgrLmtjpDyvdRcw</a></p>
<p>三个 100 万（中）：<a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/N-zLdVOJiJ9TAapmhdni3g">https://mp.weixin.qq.com/s/N-zLdVOJiJ9TAapmhdni3g</a></p>
<p>在腾讯连拿六个五星（下）：<a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/joj1vIvgKwKg9OYD9tVn1A">https://mp.weixin.qq.com/s/joj1vIvgKwKg9OYD9tVn1A</a></p>
<p>认清人生的六个阶段：<a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/XwRrAJuSBhibuKJECSxDPw">https://mp.weixin.qq.com/s/XwRrAJuSBhibuKJECSxDPw</a></p>
<p>“打法”系列文章整合：<a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/u-9RTSq91SdmhxvzWPX9qw">https://mp.weixin.qq.com/s/u-9RTSq91SdmhxvzWPX9qw</a></p>
<p>毕业一年升P6的前端晋升总结：<a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/4wd5KexDR69cPHNuDcAPag">https://mp.weixin.qq.com/s/4wd5KexDR69cPHNuDcAPag</a></p>
 
      <!-- reward -->
      
      <div id="reword-out">
        <div id="reward-btn">
          打赏
        </div>
      </div>
      
    </div>
    

    <!-- copyright -->
    
    <div class="declare">
      <ul class="post-copyright">
        <li>
          <i class="ri-copyright-line"></i>
          <strong>版权声明： </strong>
          
          本博客所有文章除特别声明外，著作权归作者所有。转载请注明出处！
          
        </li>
      </ul>
    </div>
    
    <footer class="article-footer">
       
<div class="share-btn">
      <span class="share-sns share-outer">
        <i class="ri-share-forward-line"></i>
        分享
      </span>
      <div class="share-wrap">
        <i class="arrow"></i>
        <div class="share-icons">
          
          <a class="weibo share-sns" href="javascript:;" data-type="weibo">
            <i class="ri-weibo-fill"></i>
          </a>
          <a class="weixin share-sns wxFab" href="javascript:;" data-type="weixin">
            <i class="ri-wechat-fill"></i>
          </a>
          <a class="qq share-sns" href="javascript:;" data-type="qq">
            <i class="ri-qq-fill"></i>
          </a>
          <a class="douban share-sns" href="javascript:;" data-type="douban">
            <i class="ri-douban-line"></i>
          </a>
          <!-- <a class="qzone share-sns" href="javascript:;" data-type="qzone">
            <i class="icon icon-qzone"></i>
          </a> -->
          
          <a class="facebook share-sns" href="javascript:;" data-type="facebook">
            <i class="ri-facebook-circle-fill"></i>
          </a>
          <a class="twitter share-sns" href="javascript:;" data-type="twitter">
            <i class="ri-twitter-fill"></i>
          </a>
          <a class="google share-sns" href="javascript:;" data-type="google">
            <i class="ri-google-fill"></i>
          </a>
        </div>
      </div>
</div>

<div class="wx-share-modal">
    <a class="modal-close" href="javascript:;"><i class="ri-close-circle-line"></i></a>
    <p>扫一扫，分享到微信</p>
    <div class="wx-qrcode">
      <img src="//api.qrserver.com/v1/create-qr-code/?size=150x150&data=http://example.com/2021/07/18/resource/profession/%E6%AF%95%E4%B8%9A%E5%89%8D%E4%B8%89%E5%B9%B4%E5%A6%82%E4%BD%95%E5%9C%A8%E5%A4%A7%E5%8E%82%E6%8B%BF%E5%88%B0%E5%A5%BD%E7%BB%A9%E6%95%88/" alt="微信分享二维码">
    </div>
</div>

<div id="share-mask"></div>  
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E7%94%9F%E6%B6%AF/" rel="tag">生涯</a></li></ul>

    </footer>
  </div>

   
  <nav class="article-nav">
    
      <a href="/2021/07/24/resource/profession/%E4%BB%8E%E5%85%A5%E8%81%8C%E5%88%B0%E5%8D%87%E8%81%8C/" class="article-nav-link">
        <strong class="article-nav-caption">上一篇</strong>
        <div class="article-nav-title">
          
            从入职到升职
          
        </div>
      </a>
    
    
      <a href="/2021/07/11/Java/Java%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86finally/" class="article-nav-link">
        <strong class="article-nav-caption">下一篇</strong>
        <div class="article-nav-title">Java异常处理finally</div>
      </a>
    
  </nav>

   
<!-- valine评论 -->
<div id="vcomments-box">
  <div id="vcomments"></div>
</div>
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/valine@1.4.14/dist/Valine.min.js"></script>
<script>
  new Valine({
    el: "#vcomments",
    app_id: "",
    app_key: "",
    path: window.location.pathname,
    avatar: "monsterid",
    placeholder: "给我的文章加点评论吧~",
    recordIP: true,
  });
  const infoEle = document.querySelector("#vcomments .info");
  if (infoEle && infoEle.childNodes && infoEle.childNodes.length > 0) {
    infoEle.childNodes.forEach(function (item) {
      item.parentNode.removeChild(item);
    });
  }
</script>
<style>
  #vcomments-box {
    padding: 5px 30px;
  }

  @media screen and (max-width: 800px) {
    #vcomments-box {
      padding: 5px 0px;
    }
  }

  #vcomments-box #vcomments {
    background-color: #fff;
  }

  .v .vlist .vcard .vh {
    padding-right: 20px;
  }

  .v .vlist .vcard {
    padding-left: 10px;
  }
</style>

 
   
     
</article>

</section>
      <footer class="footer">
  <div class="outer">
    <ul>
      <li>
        Copyrights &copy;
        2021
        <i class="ri-heart-fill heart_icon"></i> Chenyy
      </li>
    </ul>
    <ul>
      <li>
        
      </li>
    </ul>
    <ul>
      <li>
        
        
        <span>
  <span><i class="ri-user-3-fill"></i>访问人数:<span id="busuanzi_value_site_uv"></span></s>
  <span class="division">|</span>
  <span><i class="ri-eye-fill"></i>浏览次数:<span id="busuanzi_value_page_pv"></span></span>
</span>
        
      </li>
    </ul>
    <ul>
      
    </ul>
    <ul>
      
    </ul>
    <ul>
      <li>
        <!-- cnzz统计 -->
        
        <script type="text/javascript" src='https://s9.cnzz.com/z_stat.php?id=1278069914&amp;web_id=1278069914'></script>
        
      </li>
    </ul>
  </div>
</footer>
      <div class="float_btns">
        <div class="totop" id="totop">
  <i class="ri-arrow-up-line"></i>
</div>

<div class="todark" id="todark">
  <i class="ri-moon-line"></i>
</div>

      </div>
    </main>
    <aside class="sidebar on">
      <button class="navbar-toggle"></button>
<nav class="navbar">
  
  <div class="logo">
    <a href="/"><img src="/images/ayer-side.svg" alt="ChenyyのBlog"></a>
  </div>
  
  <ul class="nav nav-main">
    
    <li class="nav-item">
      <a class="nav-item-link" href="/">主页</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/archives">文章</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/categories">分类</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/tags">标签</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/tags/book">收藏</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/about/me">关于我</a>
    </li>
    
  </ul>
</nav>
<nav class="navbar navbar-bottom">
  <ul class="nav">
    <li class="nav-item">
      
      <a class="nav-item-link nav-item-search"  title="搜索">
        <i class="ri-search-line"></i>
      </a>
      
      
      <a class="nav-item-link" target="_blank" href="/atom.xml" title="RSS Feed">
        <i class="ri-rss-line"></i>
      </a>
      
    </li>
  </ul>
</nav>
<div class="search-form-wrap">
  <div class="local-search local-search-plugin">
  <input type="search" id="local-search-input" class="local-search-input" placeholder="Search...">
  <div id="local-search-result" class="local-search-result"></div>
</div>
</div>
    </aside>
    <script>
      if (window.matchMedia("(max-width: 768px)").matches) {
        document.querySelector('.content').classList.remove('on');
        document.querySelector('.sidebar').classList.remove('on');
      }
    </script>
    <div id="mask"></div>

<!-- #reward -->
<div id="reward">
  <span class="close"><i class="ri-close-line"></i></span>
  <p class="reward-p"><i class="ri-cup-line"></i>请我喝杯咖啡吧~</p>
  <div class="reward-box">
    
    
  </div>
</div>
    
<script src="/js/jquery-2.0.3.min.js"></script>


<script src="/js/lazyload.min.js"></script>

<!-- Tocbot -->


<script src="/js/tocbot.min.js"></script>

<script>
  tocbot.init({
    tocSelector: '.tocbot',
    contentSelector: '.article-entry',
    headingSelector: 'h1, h2, h3, h4, h5, h6',
    hasInnerContainers: true,
    scrollSmooth: true,
    scrollContainer: 'main',
    positionFixedSelector: '.tocbot',
    positionFixedClass: 'is-position-fixed',
    fixedSidebarOffset: 'auto'
  });
</script>

<script src="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.css">
<script src="https://cdn.jsdelivr.net/npm/justifiedGallery@3.7.0/dist/js/jquery.justifiedGallery.min.js"></script>

<script src="/dist/main.js"></script>

<!-- ImageViewer -->

<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

    <!-- Background of PhotoSwipe. 
         It's a separate element as animating opacity is faster than rgba(). -->
    <div class="pswp__bg"></div>

    <!-- Slides wrapper with overflow:hidden. -->
    <div class="pswp__scroll-wrap">

        <!-- Container that holds slides. 
            PhotoSwipe keeps only 3 of them in the DOM to save memory.
            Don't modify these 3 pswp__item elements, data is added later on. -->
        <div class="pswp__container">
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
        </div>

        <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
        <div class="pswp__ui pswp__ui--hidden">

            <div class="pswp__top-bar">

                <!--  Controls are self-explanatory. Order can be changed. -->

                <div class="pswp__counter"></div>

                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>

                <button class="pswp__button pswp__button--share" style="display:none" title="Share"></button>

                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>

                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>

                <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
                <!-- element will get class pswp__preloader--active when preloader is running -->
                <div class="pswp__preloader">
                    <div class="pswp__preloader__icn">
                        <div class="pswp__preloader__cut">
                            <div class="pswp__preloader__donut"></div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
                <div class="pswp__share-tooltip"></div>
            </div>

            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
            </button>

            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
            </button>

            <div class="pswp__caption">
                <div class="pswp__caption__center"></div>
            </div>

        </div>

    </div>

</div>

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/default-skin/default-skin.min.css">
<script src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe-ui-default.min.js"></script>

<script>
    function viewer_init() {
        let pswpElement = document.querySelectorAll('.pswp')[0];
        let $imgArr = document.querySelectorAll(('.article-entry img:not(.reward-img)'))

        $imgArr.forEach(($em, i) => {
            $em.onclick = () => {
                // slider展开状态
                // todo: 这样不好，后面改成状态
                if (document.querySelector('.left-col.show')) return
                let items = []
                $imgArr.forEach(($em2, i2) => {
                    let img = $em2.getAttribute('data-idx', i2)
                    let src = $em2.getAttribute('data-target') || $em2.getAttribute('src')
                    let title = $em2.getAttribute('alt')
                    // 获得原图尺寸
                    const image = new Image()
                    image.src = src
                    items.push({
                        src: src,
                        w: image.width || $em2.width,
                        h: image.height || $em2.height,
                        title: title
                    })
                })
                var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, {
                    index: parseInt(i)
                });
                gallery.init()
            }
        })
    }
    viewer_init()
</script>

<!-- MathJax -->

<!-- Katex -->

<!-- busuanzi  -->


<script src="/js/busuanzi-2.3.pure.min.js"></script>


<!-- ClickLove -->

<!-- ClickBoom1 -->

<!-- ClickBoom2 -->

<!-- CodeCopy -->


<link rel="stylesheet" href="/css/clipboard.css">

<script src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js"></script>
<script>
  function wait(callback, seconds) {
    var timelag = null;
    timelag = window.setTimeout(callback, seconds);
  }
  !function (e, t, a) {
    var initCopyCode = function(){
      var copyHtml = '';
      copyHtml += '<button class="btn-copy" data-clipboard-snippet="">';
      copyHtml += '<i class="ri-file-copy-2-line"></i><span>COPY</span>';
      copyHtml += '</button>';
      $(".highlight .code pre").before(copyHtml);
      $(".article pre code").before(copyHtml);
      var clipboard = new ClipboardJS('.btn-copy', {
        target: function(trigger) {
          return trigger.nextElementSibling;
        }
      });
      clipboard.on('success', function(e) {
        let $btn = $(e.trigger);
        $btn.addClass('copied');
        let $icon = $($btn.find('i'));
        $icon.removeClass('ri-file-copy-2-line');
        $icon.addClass('ri-checkbox-circle-line');
        let $span = $($btn.find('span'));
        $span[0].innerText = 'COPIED';
        
        wait(function () { // 等待两秒钟后恢复
          $icon.removeClass('ri-checkbox-circle-line');
          $icon.addClass('ri-file-copy-2-line');
          $span[0].innerText = 'COPY';
        }, 2000);
      });
      clipboard.on('error', function(e) {
        e.clearSelection();
        let $btn = $(e.trigger);
        $btn.addClass('copy-failed');
        let $icon = $($btn.find('i'));
        $icon.removeClass('ri-file-copy-2-line');
        $icon.addClass('ri-time-line');
        let $span = $($btn.find('span'));
        $span[0].innerText = 'COPY FAILED';
        
        wait(function () { // 等待两秒钟后恢复
          $icon.removeClass('ri-time-line');
          $icon.addClass('ri-file-copy-2-line');
          $span[0].innerText = 'COPY';
        }, 2000);
      });
    }
    initCopyCode();
  }(window, document);
</script>


<!-- CanvasBackground -->


    
  </div>
</body>

</html>